// 一定次数后执行cb()
// function doSth (t, cb) {
//   return function () {
//     if (--t === 0) {
//       cb();
//     }
//   }
// }

function logSth (cb) {
  console.log('这是打印出来的第一句话!')
  cb();
}

function logSth2 (cb) {
  console.log('这是打印出来的第二句话!');
  cb();
}

function logSth3 () {
  console.log('这是打印出来的第三句话!');
}

let fn = doSth(4, logSth.bind(null, logSth2.bind(null, logSth3)));

// 相当于 (回调地狱，模拟)
// function doSth (t) {
//   return function () {
//     if (--t === 0) {
//       logSth(function () {
//         logSth2(function () {
//           logSth3();
//         })
//       })
//     }
//   }
// }

// let fn = doSth(4);

fn();
fn();
fn();
fn();


// 回调地狱 (ajax异步请求数据)

// $.ajax({
//   success (data1) {
//     $.ajax({
//       data: {
//         d: data1
//       },
//       success (data2) {
//         $.ajax({
//           data: {
//             d: data1
//           },
//           success (data3) {
//             $.ajax({
//               data: {
//                 d: data3
//               },
//             })
//           }
//         })
//       }
//     })
//   }
// })

// $.ajax({})

// $.ajax({})

// 异步的操作 需要同步的结果



